package com.example.joblinker.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.joblinker.dto.LoginDTO;
import com.example.joblinker.dto.RegisterDTO;
import com.example.joblinker.vo.UserVO;

import javax.servlet.http.HttpServletRequest;

/**
 * 用户服务接口
 */
public interface UserService {

    /**
     * 用户注册
     *
     * @param registerDTO 注册信息
     * @return 用户视图对象
     */
    UserVO register(RegisterDTO registerDTO);

    /**
     * 用户登录
     *
     * @param loginDTO 登录信息
     * @return 用户视图对象
     */
    UserVO login(LoginDTO loginDTO);

    /**
     * 获取当前用户信息
     *
     * @param request HTTP请求
     * @return 用户视图对象
     */
    UserVO getCurrentUser(HttpServletRequest request);

    /**
     * 获取用户列表
     *
     * @param page 页码
     * @param size 每页大小
     * @param keyword 搜索关键词
     * @return 用户列表分页对象
     */
    Page<UserVO> getUserList(Integer page, Integer size, String keyword);

    /**
     * 更新用户状态
     *
     * @param id 用户ID
     * @param status 状态（0-正常，1-禁用）
     */
    void updateUserStatus(Long id, Integer status);

    /**
     * 重置用户密码
     *
     * @param id 用户ID
     */
    void resetUserPassword(Long id);

    /**
     * 更新用户信息
     * @param userVO 用户信息
     * @return 更新结果
     */
    boolean updateUser(UserVO userVO);

    /**
     * 删除用户
     * @param id 用户ID
     * @return 删除结果
     */
    boolean deleteUser(Long id);

    /**
     * 根据用户ID获取用户名
     */
    String getUsernameById(Long userId);
    
    /**
     * 获取用户角色标识
     * @param userId 用户ID
     * @return 角色标识（ROLE_USER-求职者，ROLE_HR-招聘者，ROLE_ADMIN-管理员）
     */
    String getUserRole(Long userId);
} 